import gulp from 'gulp';  //编译工具
import gulpif from 'gulp-if';  // gulp中的if判断
import concat from 'gulp-concat'; //gulp中处理文件拼接
import webpack from 'webpack';  //打包工具
import gulpWebpack from 'webpack-stream';  
import named from 'vinyl-named';  //文件重命名
import livereload from 'gulp-livereload';  //浏览器自动刷新
import plumber from 'gulp-plumber';  //处理文件信息流
import rename from 'gulp-rename';   //文件重名
import uglify from 'gulp-uglify';   // 处理js  css压缩
import {log,colors} from 'gulp-util';   //处理命令行工具输出和色彩
import args from './util/args';  //对命令行参数进行解析

//创建脚本自动编译的任务
gulp.task('scripts',()=>{
  return gulp.src(['app/js/index.js'])    
    .pipe(plumber({  //处理常规的错误逻辑
      errorHandle:function(){

      }
    }))
    .pipe(named()) //文件重新命名
    .pipe(gulpWebpack({  //对js进行编译
      module:{ 
        loaders:[{
          test:/\.js$/,
          loader:'babel'
        }]
      }
    }),null,(err,stats)=>{ 
    //设置处理错误的情况
      log(`Finished '${colors.cyan('scripts')}'`,stats.toString({
        chunks:false
      }))
    })
    .pipe(gulp.dest('server/public/js')) //编译后的文件指定存储目录
    .pipe(rename({ // 编译后的文件重命名
      basename:'cp',
      extname:'.min.js'
    }))
    .pipe(uglify({compress:{properties:false},output:{'quote_keys':true}})) //对文件进行压缩
    .pipe(gulp.dest('server/public/js'))  //压缩后的文件存储目录
    .pipe(gulpif(args.watch,livereload()))  //配置自动刷新
})
